$(document).ready(function(){
	$("#sltProducto").change(obtenerProducto);	
	$("#txtCodBarra").keyup(obtenerProductoCodBarra);
	$("#btnAgregar").click(addProduct);
	$("#btnSave").click(save);
	$("#ProductsByStoreDiv").hide();
	$("#btnBuscar").click(function(){search($("#sltCriterio").val(), $("#txtTexto").val(), $("input[name=rdEstado]:checked").val());});
	
	function obtenerProducto(){
		$.ajax({ 
    		data:{
    			codigo:$(this).val()
    		},
            datatype:'json',
            type: "GET", 
            url: "Entrada/ObtenerProducto.htm", 
            success: function(data){
            	//alert(JSON.stringify(data));
            	$("#txtCodBarra").val(data.procodbarraV);
            	$.message.Success();
            },error: function(jqXHR, textStatus, errorThrown){
            	$.message.Error();
            }
    	});	
	}
	
	function obtenerProductoCodBarra(){
		$.ajax({ 
    		data:{
    			codigo:$(this).val()
    		},
            datatype:'json',
            type: "GET", 
            url: "Entrada/ObtenerProductoCodBarra.htm", 
            success: function(data){
            	//alert(JSON.stringify(data));
            	$("#sltProducto").val(data.procodigoI);
            	$.message.Success();
            },error: function(jqXHR, textStatus, errorThrown){
            	$.message.Error();
            }
    	});
	}
	
	
	//Function to add products
	function addProduct(){
		var productCode=$.trim($("#txtCodBarra").val());
		var productId=$.trim($("#sltProducto").val());
		var productName=$.trim($("#sltProducto :selected").text());		
		var productQuantity=$.trim($("#txtCantidad").val());
		var productTypeText=$.trim($("#sltTipo :selected").text());
		var productoTypeValue=$.trim($("#sltTipo").val());
		var storeText=$.trim($("#sltTienda :selected").text());
		var storeValue=$.trim($("#sltTienda").val());
		//alert(AddProductValidator(productId));
		if(!AddProductValidator(productId,storeValue)) return;
		$("#tblListaProductos").append('<tr><th style="display:none">'+productoTypeValue+'</th><th style="display:none">'+storeValue+'</th><th scope="row"><label for="customFieldName">'+storeText+'</label></th><th scope="row"><label for="customFieldName">'+productCode+'</label></th><th scope="row"><label for="customFieldName">'+productName+'</label></th><th scope="row"><label for="customFieldName">'+productQuantity+'</label></th><th style="display:none">'+productId+'</th><th scope="row"><label for="customFieldName">'+productTypeText+'</label></th><th><a href="javascript:void(0);" id="remCF">Quitar</a></th></tr>');		
	}
	function AddProductValidator(productid,storeid){
		var ret=true;
		$("#tblListaProductos tr").each(function (index) {
			
			var productIdp="0";
			var storeValue="";
			$(this).children("th").each(function (index2) {
				switch (index2) {
					case 1:storeValue = $(this).text();break;
					case 6:productIdp = $(this).text();break;
				}
		    });
			if(productid==productIdp && storeValue==storeid){
				alert("El Producto ya existe en la lista del almacen seleccionado");					
				ret=false;
				return;
			}
		});
		return ret;
	}
	//Function to remove products
    $("#tblListaProductos").on('click', '#remCF', function(){
        $(this).parent().parent().remove();
    });
    
    //Function to load  data to a JSON format
    function loadJSON(){
    	var dato=new Array();
    	
    	 $("#tblListaProductos tr").each(function (index) {
				var productCode="";
				var productQuantity="0";
				var productId="0";
				var productTypeValue="I";				
				var storeValue="";
				
				$(this).children("th").each(function (index2) {
					switch (index2) {
						case 0:productTypeValue = $(this).text();break;
						case 1:storeValue = $(this).text();break;
						case 3:productCode = $(this).text();break;
						case 5:productQuantity = $(this).text();break;
						case 6:productId = $(this).text();break;
					}					
    		    });  
				var entradaSalida =new Object();
				
				entradaSalida.producto=new Object();
				entradaSalida.almacen=new Object();
				entradaSalida.tienda=new Object();
				entradaSalida.motivo=new Object();
								
				entradaSalida.producto.procodbarraV=productCode;
				entradaSalida.producto.procodigoI=productId;
				entradaSalida.almacen.almcodigoI=1;//TODO: Cambiar por el id almacen correspondiente
				entradaSalida.tienda.tiecodigoI=storeValue;
				entradaSalida.motivo.motcodigoI=1;//TODO: Cambiar por el id motivo correspondiente
				entradaSalida.escantidadI=productQuantity;
				entradaSalida.estipoC=productTypeValue;
				
				dato[index]=entradaSalida;
    	 });
    	 return  dato;
	}
    //Function to save 
    function save(){
    	var dato=loadJSON();
    	 $.ajax({ 
      		data:JSON.stringify(dato),
              dataType:'json',
              contentType:'application/json',
              type: "POST", 
              url: "Entrada/Procesar.htm", 
              success: function(data){
              	$.message.Success();
              	$("#tblListaProductos").html('');
              	$("#btnBuscar").click();
              },error: function(jqXHR, textStatus, errorThrown){            	
              	$.message.Error(jqXHR);
              }
      	});	
    }
    
    function search(criterio,texto,estado){
    	$.ajax({ 
    		data:{
    			criterio:criterio,
    			texto:texto,
    			estado:estado
    		},
            datatype:'json',
            type: "POST", 
            url: "Entrada/Listar.htm", 
            success: function(data){
            	FillTable(data);
            },error: function(jqXHR, textStatus, errorThrown){
            	$.message.Error();
            }
    	});		        	
    }
    
    function FillTable(data){
    	if(data==""){ 
    		$("#tblLista").empty();
    		return;
    	}
    	var txtHtml="";
    	$("#tblLista").empty();
    	txtHtml="<thead>"
			+"<th class='header'>NUM</th>"
			+"<th class='header'>TIENDA</th>"
			+"<th class='header'>CANTIDAD DE PRODUCTOS</th>"
			+"<th class='header'>VER STOCK</th>"
			+"</thead>"
			+"<tfoot>"
			+"<th>NUM</th>"
			+"<th>TIENDA</th>"
			+"<th>CANTIDAD DE PRODUCTOS</th>"			
			+"<th>VER STOCK</th>"
			+"</tfoot>"
			+"<tbody></tbody>";
			$("#tblLista").append(txtHtml);
    	for(var x=0;x<data.length;x++){
    		txtHtml="<tr>"+
			"<td>"+(x+1)+"</td>"+
			"<td>"+data[x].tienda.tienombreV+"</td>"+
			"<td>"+data[x].escantidadI+"</td>"+
			"<td><img alt='Ver' class='btnView' id='view"+data[x].tienda.tiecodigoI+"' src='images/find.png'></td>"+
			"</tr>";
    		$("#tblLista tbody").append(txtHtml);    		
    	}
    	$("#tblLista").paginacion();
    	$(".btnView").click(View);
    }
    //Function to view products list by store 
    function View(){
		$.ajax({ 
    		data:{
    			codigo:$(this).attr("id").replace("view","")
    		},
            datatype:'json',
            type: "POST", 
            url: "Entrada/ViewProductsByStore.htm", 
            success: function(data){
            	FillProductsTable(data);
            	$("#ProductsByStoreDiv").dialog({
            		title:"Lista de Productos por Tienda",
            		width:400,
            		//height: 600,
            		modal: true
            	});
            },error: function(jqXHR, textStatus, errorThrown){
            	$.message.Error();
            }
    	});		
	}
    
    //Function to fill the products table 
    function FillProductsTable(data){
    	if(data==""){ 
    		$("#tblProductsList").empty();
    		return;
    	}
    	var txtHtml="";
    	$("#tblProductsList").empty();
    	txtHtml="<thead>"
			+"<th class='header'>NUM</th>"
			+"<th class='header'>PRODUCTO</th>"
			+"<th class='header'>CANTIDAD</th>"			
			+"</thead>"
			+"<tfoot>"
			+"<th>NUM</th>"
			+"<th>PRODUCTO</th>"
			+"<th>CANTIDAD</th>"			
			+"</tfoot>"
			+"<tbody></tbody>";
			$("#tblProductsList").append(txtHtml);
    	for(var x=0;x<data.length;x++){
    		txtHtml="<tr>"+
			"<td>"+(x+1)+"</td>"+
			"<td>"+data[x].producto.pronombreV+"</td>"+
			"<td>"+data[x].escantidadI+"</td>"+			
			"</tr>";
    		$("#tblProductsList tbody").append(txtHtml);    		
    	}
    	$("#tblProductsList").paginacionPager("#ProductPager");
    	$(".btnView").click(View);
    }
    
    
});